%% TEX $VER: INVOICEMACRO.TEX 1.0 (29.10.1995) %% BESCHREIBUNG: Urspr nglich abgeleitet vom `letterformat.tex' aus dem %% TeXbook, Seite 404 bis 408, und sp ter aus `anschrift.tex', enth %% diese Datei meinen Versuch eines Rechnungsformulars mit TeX. %% DATUM: 03.07.1993 (V0.0) %% DATEIEN: MACROS:german/german.sty NDERUNGEN: 04.07.1993: Einf hrung von Textvariablen (V0.1) %% Mehrsprachigkeit eingebaut(V0.2) %% Automatische Formatierung von Betr gen (V0.3) %% 05.07.1993: Automatische Formatierung des Bestellatums (V0.4) %% Fortsetzungshinweis und Schlu dank (V0.5) %% 07.07.1993: Fehler in `\printformattedamount' bei %% glatten Betr gen beseitigt (V0.6) %% 10.07.1993: Erweiterung des Rechnungsformates f %% Lieferscheine, Bestellungen und %% Auftragsbest tigungen (V0.7) %% 11.07.1993: Makros `\begintext', `\textbody', `\endtext' %% sowie `\closing', `\annotations' und `\ps' %% eingebaut, um mit diesem Format auch Briefe %% schreiben zu k nnen (V0.8) %% Dummy-Texte als Vorgabe; suche LOCAL (V0.9) %% 13.07.1993: Erweiterung f r Angebote (V0.10) %% 16.07.1993: Trennung LOCALer und globaler Makros und %% Einbau in ein TeX-Format (V0.11) %% 17.07.1993: Weitere LOCALisierte Texte eingebaut und %% die Nachrichtenzeile verbessert (V0.12) %% 14.09.1993: Makros f r Diskettenformate (V0.13) %% 08.11.1993: Firmenbeschreibung (V0.14) %% 05.01.1994: nderung der Offset-Einstellung wegen %% DVIPrint 1.19 und DVIPrintSetUp 3.87 (V0.15) %% 09.01.1994: M glichkeit, Freitext als Gru anzugeben (V0.16) %% 31.01.1994: Firmenbeschreibung nun zweizeilig (V0.17) %% 01.02.1994: Neue Seitenbreite und Offsets. Falzzeile %% erscheint auch ohne \texthead. (V0.18) %% 01.08.1994: Korrekturen bei einigen Abk rzungen. %% `spacefactor1000'. (V0.19) %% 31.08.1994: Falzlinie und Adre feld korrigiert. (V0.20) %% 01.09.1994: Weitere Dynamisierung von Feldern. (V0.21) %% 20.11.1994: Entwurfs-Copyright entfernt %% 14.05.1995: allgemeine Version. Es sollten hier keine %% nderungen mehr gemacht werden. Diese werden %% in 'invoicepatch.tex' f r spezielle W nsche %% eingetragen. (V1.0) %% 29.10.1995: Mengenangabe mit Nachkommastellen %% AUTOR: Andreas Scherer %% Abt-Wolf-Stra %% 96215 Lichtenfels %% COPYRIGHT: (c) 1993,1994 Andreas Scherer. %% COPYRIGHT: (c) 1995 Stefan Scherer. %% Dieses TeX-Programm darf nur in unver nderter Form und nur in %% Zusammenhang mit den Programmen von Stefan und Andreas Scherer %% weitergegeben und eingesetzt werden. Das Kopieren, Verbreiten %% und insbesondere das Ver ndern des Quelltextes sind untersagt. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Durch Einbindung von "`german.sty"' werden Teile des Formulars, wie das %% Rechnungsdatum oder die Seitenbezeichnung automatisch an eine mehrsprachige %% Verwendung angepa t. Standardsprache ist deutsch. Zum Umschalten %% auf eine andere Sprache dient "`\selectlanguage{}"', wobei %% derzeit die Werte "`german"' (Standard), "`english"', %% "`USenglish"' und "`french"' annehmen darf. Weitere Sprachen k %% in hnlicher Weise hinzugef gt werden. \input german.sty %% Die beliebten Umlaute und Sonderzeichen des Deutschen k nnen auf %% dem AMIGA in lesbarer Form eingegeben werden. \input ecma94.tex %% Um auf die internen Befehle von "`german.sty"' zugreifen und %% eigene Makros in dieser Form definieren zu k nnen, wird der %% Klammeraffe aktiviert. Sein bisheriger Wert wird gesichert. \chardef\atcode=\catcode`\@ \catcode`\@=11 % \makeatletter %% Da einige Dimensionen und Font-Gr en in absoluten Ma en angegeben %% sind, sollte der Vergr erungsfaktor nicht ver ndert werden. \magnification=\magstep1 %% Erweiterte Zeichens tze f r die verwendeten Macros. Weitere %% Fonts k nnen nach eigenem Geschmack an dieser Stelle hinzugef %% werden. Entfernen sollte man von dieser Liste aber nichts. \font\mc=cmr9 % kleine Schriften f r Versalien \font\sc=cmr8 % nicht mit Caps Small Caps zu verwechseln \font\csc=cmcsc10 \font\footboldfont=cmssbx10 at 8truept % f r die kleinen Textteile \font\footfont=cmss8 at 8truept % werden kleine Schriften gew \font\footpound=cmitt10 scaled 800 % das Pfundzeichen \font\largeheadfont=cmssu30 % f r den Namen im Kopfteil \font\smallheadfont=cmr8 at 8truept % f r die Adresse im Kopfteil \font\symbols=wasy8 at 8truept % das Telefonzeichen %% Vorsorglich definiere ich einige Macros f r spezielle %% Objektbezeichnungen, die nicht ganz trivial sind. \newbox\PPbox \setbox\PPbox=\hbox{\kern.5pt\raise1pt\hbox{\sevenrm+\kern-1pt+}\kern.5pt} \def\PP{\copy\PPbox} \def\Cpp{{\mc C\PP\spacefactor1000}} %% Weitere Macros, die f r einige Feinheiten bei den Telefonnummern %% und der Bankverbindung dienen. Au erdem werden Makros zur Verf %% gestellt, mit denen das Rechnungsdatum berschrieben werden kann sowie %% Auftragsdatum und Kundenkennzeichen importiert werden k nnen. \def\ts{\thinspace} \def\pushup#1{\leavevmode \raise.16ex\hbox{#1}} \def\BLZ#1{\pushup{(}\bankcodename\ #1\pushup{)}} \def\date#1{\def\@date{#1}} \def\@date{\today} \def\orderdate#1{\def\order@date{\printformatteddate{#1}}} \def\order@date{} \def\yourref#1{\def\your@ref{#1}} \def\your@ref{} %% Der Seitenspiegel. Es d rfte ziemlich einsichtig sein, was hier %% passiert. Wie beim Vergr erungsfaktor gilt, hier m glichst nichts %% zu ndern. \tolerance=500 \raggedbottom \interlinepenalty=1000 \hsize=16truecm \vsize=21.6truecm \hoffset=0cm \voffset=24pt \advance\vsize by-\voffset \parindent=0pt \parskip=2pt plus1pt minus.5pt %% Kopf- und Fu zeilen: Auf der ersten Seite besteht der Kopf der %% Rechnung aus der eigenen Firmenanschrift sowie den Kundendaten. %% Auf Folgeseiten erscheint eine kleine Kopfzeile. Die Fu zeile %% gibt auf allen Seiten die Telefonnummer und die Bankverbindung an. %% Dazu kommt auf allen Seiten der Hinweis auf die Folgeseiten, nur %% auf der letzten Seite der Rechnung erscheint eine Dankesformel. \newcount\nextpage % die Nummer der Folgeseite. \newskip\footlineskip % zwischen dem bertrag oder der Endsumme und \footlineskip=2cm % dem Rechnungsfu bleibt Platz f r Textzeilen. %% Dieser Teil ist auf spezielle W nsche anzupassen. "`\faxnumber"' %% und "`\myref"' d rfen auch weggelassen werden. Gegebenenfalls %% sind weitere Makros zu definieren, zum Beispiel wenn ein zweites %% Bankkonto anzugeben ist. \def\bankaccount#1{\def\bank@account{#1}} \def\bank@account{} \def\phonenumber#1{\def\phone@number{#1}} \def\phone@number{} \def\faxnumber#1{\def\fax@number{#1}} \def\fax@number{} \def\myref#1{\def\my@ref{#1}} \def\my@ref{} \def\company#1{\def\c@mp@ny{#1}} \def\street#1{\def\str@@t{#1}} \def\city#1{\def\c@ty{#1}} \def\owner#1{\def\@wner{#1}} \bankaccount{Kreditinstitut \BLZ{Bankleitzahl}\ Kontonummer}% LOCAL \phonenumber{\pushup{(}Vorwahl\pushup{)} Durchwahl}% LOCAL \faxnumber{\pushup{(}Vorwahl\pushup{)} Durchwahl}% LOCAL \myref{Unsere Zeichen}% LOCAL \company{Firmenname}% LOCAL \street{Stra{\ss}e}% LOCAL \city{Ort}% LOCAL \owner{Inhaber}% LOCAL %% Auf Briefen soll die Kopfzeile auf Folgeseiten nur die %% Anrede, das Datum und die Seitennummer enthalten. %% Das Entwurf-Copyright wird bei Briefen unterdr \newif\ifinvoice \headline={\ifnum\pageno>1 \tenrm\headtoname\ \addressee\hfil% \ifinvoice\invoicename% \ifnum\invoicenumber>0\ \the\invoicenumber\fi\ \ofname\ \fi% \@date\hfil\pagename\ \folio \else\hfil\fi} \footline={\ifnum\pageno>0 \vbox{\null\vbox to \the\footlineskip{\vss\footlinetext\vss} \hrule\baselineskip=9truept\tabskip=0pt \halign to\hsize{\footfont#\hfil\tabskip=0pt plus 1fil&% \footfont#\hfil&\footfont#\hfil\tabskip=0pt\cr \noalign{\hrule height4truept width0pt} \footboldfont\phonename& \ifx\fax@number\empty\null\else \footboldfont\faxname\fi&\footboldfont\bankname\cr \noalign{\hrule height4truept width0pt} \phone@number& \ifx\fax@number\empty\null\else \fax@number\fi&\bank@account\cr}}\fi} %% Mode switches. Dieser Teil ist noch fast original aus %% "`letterformat.tex"'. \def\beginlinemode{\endmode \begingroup\obeylines\def\endmode{\par\endgroup}} \def\beginparmode{\endmode \begingroup\parskip=\medskipamount \def\endmode{\par\endgroup}} \let\endmode=\par \def\endinvoice{\endmode\supereject} %% Erzeuge die Empf ngeradresse durch zeilenweise Eingabe. Weicht %% der Anredetext auf den Folgeseiten von der ersten Zeile der %% Empf ngeradresse ab, so kann der Text berschrieben werden. \newdimen\longindentation \longindentation=11truecm \newbox\theaddress \def\address{\beginlinemode\getaddress} {\obeylines\gdef\getaddress #1 {#1\gdef\addressee{#2}% \global\setbox\theaddress=\vbox to 3.5cm\bgroup\vss\raggedright% \hsize=\longindentation \everypar{\hangindent2em}#2 \def\endmode{\vss\egroup\endgroup \copy\theaddress \bigskip\bigskip}}} \def\toname#1{\gdef\addressee{#1}} %% Auf der ersten Rechnungsseite wird ein allgemeiner Textteil mit %% Kundenangaben angebracht. Anschlie end folgt, genau wie auf den %% Folgeseiten, die Tabelle der Rechnungspositionen. Daf r ist das %% Makro `\body' zust ndig. %% Will man mit dem `invoice.tex' Programm auch freie Texte, wie %% zum Beispiel Briefe schreiben, so steht `\textbody' zur Verf gung. \def\body#1{\beginparmode\global\invoicetrue \ifnum\pageno>1\positions#1 \else\bodyhead\positions#1\fi} \def\textbody{\beginparmode\global\invoicefalse\hrule\vskip\bigskipamount} \def\closing{\beginlinemode\getclosing} {\obeylines\gdef\getclosing #1 {#1\nobreak\bigskip \leftskip=.85\longindentation #2 \nobreak\vskip5\bigskipamount % space for signature \def {\endgraf\nobreak}}} \def\annotations{\beginlinemode\def\par{\endgraf\nobreak}\obeylines\par} \def\ps{\beginparmode\nobreak \interlinepenalty5000\def\par{\endgraf\penalty5000}} \def\begintext{\gdef\footlinetext{\null}\invoice} \def\endtext{\endinvoice} %% Der Rechnungskopf enth lt neben dem Firmenlogo auch noch die %% Absendeadresse f r Fensterumschl ge und das aktuelle Datum. r Briefumschl ge mit Klarsichtfenster wird die eigene % Anschrift ber der Kundenanschrift wiederholt. \def\sender{\c@mp@ny, \str@@t, \c@ty}% LOCAL % Beim Bedrucken von Briefumschl gen wird eine besondere Form % der eigenen Anschrift gew \def\returnaddress{\c@mp@ny\par\@wner\par\str@@t, \c@ty}% LOCAL % Als Teil der Firmenanschrift wird der Titel und die % Telefonnummer angegeben. \def\sendingaddress{\@wner\par{\symbols\char'007}\ \phone@number\par}% LOCAL % Unter dem Firmennamen bleibt Platz f r eine kurze Beschreibung \def\companytext{Firmenbeschreibung Zeile 1\par Firmenbeschreibung Zeile 2}% LOCAL \def\invoice{\pageno=1 \def\addressee{} \invoicelogo \line{\hbox to\longindentation{\vbox{\footfont\baselineskip9truept \hsize=\longindentation\companytext}\hfill}\kern-\longindentation \vbox{\smallheadfont\baselineskip9truept \leftskip=\longindentation\sendingaddress}}% \bigskip\bigskip \line{\hbox to\longindentation{\underbar{\footfont\sender} \hfil}\rm\@date\hfil}} %% Beim derzeitigen Format enth lt das Firmenlogo lediglich meine %% Anschrift in der Form von `letterformat.tex'. \def\invoicelogo{\vglue-1.6\voffset \hbox{\hbox to\longindentation{\smash{\largeheadfont\c@mp@ny}\hfil}% LOCAL \kern-\longindentation \vbox{\smallheadfont\baselineskip9truept \leftskip=\longindentation\str@@t\par\c@ty}}% LOCAL \vskip2truept\hrule\vskip4truept} %% Um dieses Format nicht nur f r Rechnungen benutzen zu k nnen, %% sondern auch f r Lieferscheine, Bestellungen, Auftr ge und Angebote %% wird der numerische Schalter "`\invoiceswitch"' eingef hrt. Durch %% Setzen mit den Werten 0, 1, 2, 3 oder 4 werden entsprechende Bezeichnungen %% im Rechnungskopf und auf den Folgeseiten verwendet. Als Standard %% ist "`Rechnung"' (0) vorgegeben. r Referenzzwecke wird die Kundennummer und das Auftrags- %% beziehungsweise Bestelldatum angegeben sowie das Wort "`Rechnung"' %% zusammen mit der Rechnungsnummer. Diese wird durch das numerische %% Argument des Befehles "`\invoice"' bei dessen Aufruf gesetzt. \newcount\invoiceswitch \invoiceswitch=0 \newcount\invoicenumber \invoicenumber=0 \newcount\customernumber \customernumber=0 \newskip\blocklineskip \newskip\positionskip \blocklineskip=.5cm \positionskip=.5cm \newcount\entry \entry=0 \def\bodyhead{\hrule\vskip\blocklineskip \line{\ifnum\invoicenumber>0\vbox{\hbox{\footfont\numbername\hfil} \hbox{\number\invoiceyear/\the\invoicenumber\hfil}}\hfil\advance\entry1\fi \ifnum\customernumber>0\vbox{\hbox{\footfont\customername\hfil} \hbox{\the\customernumber\hfil}}\hfil\advance\entry1\fi \ifx\order@date\empty\null\else\advance\entry1 \vbox{\hbox{\footfont\ordername\hfil} \hbox{\order@date\hfil}}\hfil\fi \ifx\your@ref\empty\null\else\advance\entry1 \vbox{\hbox{\footfont\yourrefname\hfil} \hbox{\your@ref\hfil}}\hfil\fi \ifx\my@ref\empty\null\else\ifcase\entry\hfil\fi \vbox{\hbox{\footfont\myrefname\hfil} \hbox{\my@ref\hfil}}\fi}\bigskip \line{\hfil\underbar{\bf\invoicename}\hfil} \vskip\blocklineskip\hrule\vskip\positionskip} \def\texthead{\vskip-\bigskipamount\vskip\blocklineskip \line{\ifx\order@date\empty\null\else \vbox{\hbox{\footfont\messagename\hfil} \hbox{\order@date\hfil}}\hfil\advance\entry1\fi \ifx\your@ref\empty\null\else\advance\entry1 \vbox{\hbox{\footfont\yourrefname\hfil} \hbox{\your@ref\hfil}}\hfil\fi \ifx\my@ref\empty\null\else\ifcase\entry\hfil\fi \vbox{\hbox{\footfont\myrefname\hfil} \hbox{\my@ref\hfil}}\fi}\bigskip} %% Tabelle f r die Rechnungspositionen. S mtliche Rechnungszeilen %% einer Seite werden zusammen an dieses Makro bergeben und tabellarisch %% formatiert. Als "`Front End"' kann ein geeignetes Rechnungsprogramm %% dienen, das jede Zeile durch Eintrag in das Makro "`\singleposition"' %% erzeugt. Dieses Makro wandelt die vorgegebenen Werte in das von %% "`\positions"' erwartete Format um, wobei gleichzeitig eine %% Anpassung an die jeweils verwendete Sprache erfolgt. \def\positions#1{\tabskip=0pt\halign to \hsize{ \strut##\hfil\tabskip=1em plus 1fil& % die Artikelbezeichnung \hfil##\hskip.5em&% die Mengenangabe \hfil##&% der Einzelpreis \hfil##&% der Positionspreis v o r 15% Mehrwertsteuer \hfil##\tabskip=0pt\cr % der Positionspreis v o r 7% Mehrwertsteuer \footfont\designationname&\omit\footfont\quantityname&% \footfont\retailname&\footfont\pricename~I&\footfont\pricename~II\cr \noalign{\smallskip} #1\crcr}} % die eigentlichen Rechnungspositionen \def\singleposition|#1|#2|#3|#4|#5|#6|#7|#8|#9|{ #1& % die Artikelbezeichnung \printformattedamount{#2}&% die Mengenangabe \printformattedamount{#3}&% der Einzelpreis \printformattedamount{#4}&% der Positionspreis v o r 15% Mehrwertsteuer \printformattedamount{#5}\cr}% der Positionspreis v o r 7% Mehrwertsteuer %% Gesamtsummen und Mehrwertsteuer. Die Mehrwertsteuer mu bereits %% errechnet werden. Die beiden m glichen Steuers tze werden mit den %% Werten von 1993 vorbelegt. Eine nderung ist durch Aufruf der %% Makros "`\vatrate[I|II]"' m glich. Am Rechnungsende werden die %% Nettosummen und Mehrwertsteuerbetr ge getrennt aufgef hrt und %% der Rechnungsgesamtbetrag ausgegeben. Dieser Ausgabeteil wird %% oben und unten durch Linien eingefa t. Im Fu bereich wird eine %% Dankesformel unter der Rechnung angebracht. Passen die Positionen %% einer Rechnung nicht auf eine Seite, so erfolgt die Ausgabe von bertragsseiten und entsprechender Bl cke bei den getrennten %% Rechnungsseiten sowie ein Hinweis auf die Folgeseite im Fu bereich. \def\vatrateI#1{\def\vat@rate@I{#1}} \def\vat@rate@I{15} % Normaler Mehrwertsteuersatz (Hard- und Software) LOCAL \def\vatrateII#1{\def\vat@rate@II{#1}} \def\vat@rate@II{7} % Erm igter Mehrwertsteuersatz (B cher) LOCAL \def\\{\hfil\break} \def\setthanksname#1{\def\@thanks@name{\vbox{\hsize=8cm \baselineskip=\normalbaselineskip#1}}} \def\@thanks@name{\thanksname} \def\totals|#1|#2|#3|#4|#5|{\gdef\footlinetext{\hfil\@thanks@name\hfil} \vfill\hrule\vskip\blocklineskip\tabskip=0pt\halign to \hsize{ \strut##\hfil\tabskip=1em plus 1fil&% "`Summe I und II"' \hfil##&% Betrag Summe I und Betrag Summe II \hfil## \%&% "`15%"' und "`7%"' \hfil##&% Mehrwertsteuerbetr \hfil{\bf##}\tabskip=0pt\cr % "`Rechnungsbetrag"' und sein Wert \footfont\totalname&\footfont\currencyname& \omit\footfont\vatname&\footfont\currencyname& \footfont\amountname\ \currencyname\cr \pricename~I&\printformattedamount{#1}& \printformattedamount{\vat@rate@I}&\printformattedamount{#3}&\cr \pricename~II&\printformattedamount{#2}& \printformattedamount{\vat@rate@II}&\printformattedamount{#4}& \underbar{\printformattedamount{#5}}\cr} \vskip\blocklineskip\hrule} \def\subtotals|#1|#2|#3|#4|#5|{\gdef\footlinetext{\ifnum\pageno>0 \nextpage=\pageno \advance\nextpage by 1\hfil\continuename\ \the\nextpage\hfil\fi} \vfill\hrule\vskip\blocklineskip\tabskip=0pt\halign to \hsize{ \strut##\hfil\tabskip=1em plus 1fil&% "`Zwischensumme I und II"' \hfil##&% Betrag Zwischensumme I und II \hfil## \%&% "`15%"' und "`7%"' \hfil##&% Mehrwertsteuerbetr \hfil{\bf##}\tabskip=0pt\crcr % "` bertrag"' und sein Wert \footfont\subtotalname&\footfont\currencyname& \omit\footfont\vatname&\footfont\currencyname& \footfont\carryovername\ \currencyname\cr \pricename~I&\printformattedamount{#1}& \printformattedamount{\vat@rate@I}&\printformattedamount{#3}&\cr \pricename~II&\printformattedamount{#2}& \printformattedamount{\vat@rate@II}&\printformattedamount{#4}& \underbar{\printformattedamount{#5}}\cr \noalign{\vskip\blocklineskip\hrule\eject\hrule\vskip\blocklineskip} \footfont\subtotalname&\footfont\currencyname& \omit\footfont\vatname&\footfont\currencyname& \footfont\carryovername\ \currencyname\cr \pricename~I&\printformattedamount{#1}& \printformattedamount{\vat@rate@I}&\printformattedamount{#3}&\cr \pricename~II&\printformattedamount{#2}& \printformattedamount{\vat@rate@II}&\printformattedamount{#4}& \underbar{\printformattedamount{#5}}\cr} \vskip\blocklineskip\hrule\vskip\positionskip} %% In Anlehnung an das Verfahren aus "`german.sty"' werden zahlreiche %% verwendete Begriffe des Rechnungsformulars in mehreren Sprachen %% zur Verf gung gestellt. Vorl ufig sind dies Deutsch, britisches %% und amerikanisches Englisch sowie Franz sisch. Andere Sprachen %% lassen sich in gleicher Weise einbauen. Dazu ist die Definition %% eines Makros "`\invoice"' vorzunehmen, wobei %% dem \languagecount entspricht. \def\invoicegerman{% \def\amountname{Rechnungsbetrag}% \def\bankname{Bank}% \def\bankcodename{BLZ}% \def\carryovername{\"Ubertrag}% \def\continuename{Fortsetzung auf Seite}% \def\currencyname{DM}% \def\customername{Kundennummer}% \def\designationname{Bezeichnung}% \def\artnumname{Art.-Nr.}% \def\faxname{Telefax}% \def\fracsep{,}% \def\invoicename{\ifcase\invoiceswitch Rechnung\or Lieferschein\or Bestellung\or Auftragsbest\"atigung\or Angebot\fi}% \def\messagename{Ihre Nachricht vom}% \def\millsep{.}% \def\myrefname{Unsere Zeichen}% \def\numbername{\ifcase\invoiceswitch Rechnungsnummer\or Lieferscheinnummer\or Bestellungsnummer\or Auftragsbest\"atigung\or Angebotsnummer\fi}% \def\ofname{vom}% \def\ordername{Ihre Bestellung vom}% \def\phonename{Telefon}% \def\pricename{Preis}% \def\quantityname{Anzahl}% \def\retailname{Einzelpreis}% \def\sumname{Gesamtpreis}% \def\subtotalname{Zwischensumme}% \def\thanksname{Wir danken f\"ur Ihren Auftrag}% \def\thousep{.}% \def\totalname{Summe}% \def\vatname{Mehrwertsteuer}% \def\yourrefname{Ihre Zeichen}}% \def\invoiceenglish{% \def\amountname{Invoice amount}% \def\bankname{Bank}% \def\bankcodename{BCN}% \def\carryovername{Carry over}% \def\continuename{To be continued on page}% \def\currencyname{{\footpound\$}}% \def\customername{Customer Number}% \def\designationname{Designation}% \def\artnumname{Art.-Nr.}% \def\faxname{Fax number}% \def\fracsep{.}% \def\invoicename{\ifcase\invoiceswitch Invoice\or Delivery note\or Order\or Confirmation of order\or Offer\fi}% \def\messagename{Your message of}% \def\millsep{,}% \def\myrefname{Our reference}% \def\numbername{\ifcase\invoiceswitch Number of invoice\or Number of delivery\or Number of order\or Number of confirmation\or Number of offer\fi}% \def\ofname{of}% \def\ordername{Your order of}% \def\phonename{Phone number}% \def\pricename{Price}% \def\quantityname{Quantity}% \def\retailname{Retail price}% \def\sumname{Gesamtpreis}% \def\subtotalname{Subtotal}% \def\thanksname{Thank you for choosing us}% \def\thousep{,}% \def\totalname{Total}% \def\vatname{Value added tax}% \def\yourrefname{Your reference}}% \def\invoiceUSenglish{% \def\amountname{Invoice amount}% \def\bankname{Bank}% \def\bankcodename{BCN}% \def\carryovername{Carry over}% \def\continuename{To be continued on page}% \def\currencyname{\$}% \def\customername{Customer number}% \def\designationname{Designation}% \def\artnumname{Art.-Nr.}% \def\faxname{Fax number}% \def\fracsep{.}% \def\invoicename{\ifcase\invoiceswitch Invoice\or Delivery note\or Order\or Confirmation of order\or Offer\fi}% \def\messagename{Your message of}% \def\millsep{,}% \def\myrefname{Our reference}% \def\numbername{\ifcase\invoiceswitch Number of invoice\or Number of delivery\or Number of order\or Number of confirmation\or Number of offer\fi}% \def\ofname{of}% \def\ordername{Your order of}% \def\phonename{Phone number}% \def\pricename{Price}% \def\quantityname{Quantity}% \def\retailname{Retail price}% \def\sumname{Gesamtpreis}% \def\subtotalname{Subtotal}% \def\thanksname{Thank you for choosing us}% \def\thousep{,}% \def\totalname{Total value}% \def\vatname{Value added tax}% \def\yourrefname{Your reference}}% \def\invoicefrench{% \def\amountname{Somme de facture}% \def\bankname{Banque}% \def\bankcodename{Code de banque}% \def\carryovername{Report}% \def\continuename{Continu\'e en page}% \def\currencyname{FF}% \def\customername{Client}% \def\designationname{D\'esignation}% \def\artnumname{Art.-Nr.}% \def\faxname{T\'el\'efax}% \def\fracsep{,}% \def\invoicename{\ifcase\invoiceswitch Facture\or Bulletin de livraison\or Commande\or Confirmation de commande\or Offre\fi}% \def\messagename{Votre lettre du}% \def\millsep{ }% \def\myrefname{Notre r\'ef\'erence}% \def\numbername{\ifcase\invoiceswitch Nombre de facture\or Nombre de bulletin de livraison\or Nombre du commande\or Nombre de confirmation de commande\or Nombre d'offre\fi}% \def\ofname{du}% \def\ordername{Votre commande du}% \def\phonename{T\'el\'ephone}% \def\pricename{Prix}% \def\quantityname{Quantit\'e}% \def\retailname{Prix unitaire}% \def\sumname{Gesamtpreis}% \def\subtotalname{Montant partiel}% \def\thanksname{Nous vous remercions pour votre commande}% \def\thousep{ }% \def\totalname{Montant total}% \def\vatname{Taxe sur la valeur ajout\'ee}% \def\yourrefname{Votre r\'ef\'erence}}% %% Zur formatierten Ausgabe von Betr gen beliebiger W hrungseinheiten %% geh rt selbstverst ndlich auch die richtige Verwendung von %% Trennsymbolen wie Komma und Punkt. S mtliche Rechnungsbetr %% werden vom FrontEnd als Zahlenkette in Hundertsteleinheiten erwartet. \newcount\m \newcount\fractions \newcount\units \newcount\thousands \newcount\millions \def\gobbleone1{} \def\printthreedigits{\advance\m by 1000 \expandafter\gobbleone\number\m \advance\m by -1000} \def\printtwodigits{\advance\m by 100 \expandafter\gobbleone\number\m \advance\m by -100} \def\printformattedamount#1{% \m=#1 \ifnum\m<0\def\sign{$-$}\m=-\m\else\def\sign{}\fi \fractions=\m \divide\m by 100 \multiply\m by 100 \advance\fractions by -\m \units=\m \divide\units by 100 \divide\m by 100000 \multiply\m by 1000 \advance\units by -\m \thousands=\m \divide\thousands by 1000 \divide\m by 1000000 \multiply \m by 1000 \advance\thousands by -\m \millions=\m \divide\millions by 1000 \divide\m by 1000000 \multiply \m by 1000 \advance\millions by -\m \sign% \ifnum\millions>0 \the\millions\millsep% \m=\thousands\printthreedigits\thousep% \m=\units\printthreedigits\fracsep% \else\ifnum\thousands>0 \the\thousands\thousep% \m=\units\printthreedigits\fracsep% \else\ifnum\units>0 \the\units\fracsep% \else 0\fracsep\fi\fi\fi \m=\fractions\printtwodigits} hnliches gilt f r die Ausgabe des Bestell- oder Auftragsdatums, %% das stets im Format [ttmmyyyy] erwartet wird. Sollen noch weitere %% Sprachen unterst tzt werden, so mu jeweils ein Makro der Form %% "`\Date"' definiert werden, wobei genau dem %% \languagecount entsprechen mu \newcount\days \newcount\months \newcount\years \newcount\invoiceyear \invoiceyear=1994 \def\Month@German{\ifcase\months \or Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi} \def\Dategerman{\def\printdate{\number\days.~\Month@German\space\number\years}} \def\Dateaustrian{\def\printdate{\number\days.~\ifnum 1=\months J\"anner\else \Month@German\fi \space\number\years}} \def\Month@English{\ifcase\months \or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi} \def\DateUSenglish{\def\printdate{\Month@English\space\number\days, \number\years}} \def\Dateenglish{\def\printdate{\number\days \ifcase\days \or st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or % 1..10 th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or % 11..20 st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or % 21..30 st\fi~\Month@English \space\number\years}} \def\Datefrench{\def\printdate{\number\days \ifnum1=\days \/$^{\rm er}$\fi \space\ifcase\months \or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi \space\number\years}} \def\printformatteddate#1{\m=#1 \years=\m \divide\m by 10000 \multiply\m by 10000 \advance\years by -\m \months=\m \divide\months by 10000 \divide\m by 1000000 \multiply\m by 100 \advance\months by -\m \days=\m \divide\days by 100 \divide\m by 10000 \multiply \m by 100 \advance\days by -\m \printdate} %% Will man eigene Briefumschl ge bedrucken, so benutzt man %% diesen Befehl. \def\makelabel{\endinvoice\hbox{\vrule \vbox{\hrule \kern6truept \hbox{\kern6truept\vbox to 2truein{\hsize=\longindentation \smallheadfont\baselineskip9truept\returnaddress \vss\moveright 2truein\copy\theaddress\vss}% \kern6truept}\kern6truept\hrule}\vrule} \pageno=0\vfill\eject} %% Auch durch die einfache Wiederholung der Ausgabe im Fensterbrief hrt zu geeigneten Adressaufklebern. \def\invoicelabel{\endinvoice \line{\hbox to\longindentation{\underbar{\footfont\sender}\hfil}\hfil} \copy\theaddress \pageno=0\vfill\eject} %% Nur in Verbindung mit "`german.sty"' ist folgende Definition berhaupt sinnvoll. Es handelt sich um die Erweiterung des %% "`\selectlanguage"'-Makros um die Begriffe f r die Rechnung %% und die eigene Datumsroutine. \def\selectlanguage#1{\protect\p@selectlanguage{% \ifnum\escapechar=\expandafter`\string#1\empty \else \string#1\empty\fi} \expandafter\ifx\csname l@#1\endcsname\relax\else \csname invoice#1\endcsname \csname Date#1\endcsname\relax \fi} %% Der Klammeraffe bekommt wieder seine alte Bedeutung. \catcode`\@=\atcode % return to previous catcode %% Dies wird zwar bereits in "`german.sty"' gesetzt; wegen der %% Erweiterung mu aber "`\selectlanguage{german}"' nochmals %% aufgerufen werden. \germanTeX %% Hier endet INVOICEMACRO.TEX. \endinput